package Interfaces;

import Datatypes.DataCategoria;
import Datatypes.DataCompra;
import Datatypes.DataJuego;
import Datatypes.DataJuegoVersion;
import Datatypes.DataPerfil;

import java.util.List;

public interface IJuego {

    public List<DataCategoria> listarCategorias()throws Exception;
    public List<String> listarDesarrolladores()throws Exception;
    public Integer altaDeJuego(DataJuego juego) throws Exception;
    public List<String> listarJuegosXCategoria(String categoria)throws Exception;
    public List<String> listarJuegosXIDCategoria(Integer idCat) throws Exception;
    public List<DataCategoria> listarCategoriasDeJuego(Integer codigo)throws Exception;
    public List<DataPerfil> getClientesCompranJuego(Integer codigo)throws Exception;
    public List<DataJuego> listarJuegosAprobados() throws Exception;    
    public List<DataJuego> buscarJuegos(String texto) throws Exception;
    public List<DataJuego> ordenarJuegosXCompras(List<DataJuego> lj)throws Exception;
    public List<DataJuego> filtrarJuegos(List<DataJuego> lj, String filtro);
    public DataJuego elegirJuego(String juego) throws Exception;
    public DataJuego elegirJuegoXCodigo(Integer codigo)throws Exception;
    public List<DataJuego> listarJuegos()throws Exception;
    public void registrarCompra(DataCompra compra) throws Exception;
    public Integer ingresarCategoria(String categoria) throws Exception;
        
    public List<DataJuegoVersion> listarJuegosVersiones(String nickDesarrollador) throws Exception;
    public List<DataJuegoVersion> listarJuegosVersiones() throws Exception;
    
    public List<DataJuego> obtenerJuegosPopulares() throws Exception;    
    public Boolean existeJuego(String nombre_juego)throws Exception;
    public void insertarImagen(Integer codigo_juego , String path) throws Exception;
    
    public void bajaDeJuego(String  juego) throws Exception;  
    
    //Manejo de la base
    public void cargarDatosDePrueba(Boolean force) throws Exception;
    public void limpiarBD() throws Exception;
    public Boolean esVaciaBD() throws Exception;
    
}
